#include <iostream>
#include <vector>

#include <mutex>
#include <thread>

using namespace std;

static const int numthread = 10;

std::mutex main_mutex;

void show(int i) {
	{
		std::lock_guard<mutex> lock(main_mutex);
		cout << "hello wolrd\t" << i << endl;
	}
	
}

void MultiThreadsInArray() {
	thread mythread[numthread];
	for (int i = 0; i < numthread; i++)
	{
		mythread[i] = thread(show, i);
	}

	for (int i = 0; i < numthread; i++)
	{
		mythread[i].join();
	}
}

// 所需构造函数被删除
// void MultiThreadsInVector() {
// 	// thread mythread[numthread];
// 	std::vector< std::thread > thread_vector;
// 	for (int i = 0; i < numthread; i++)
// 	{
// 		std::thread thread_tmp = thread(show, i);
// 		thread_vector.push_back(thread_tmp);
// 	}

// 	// for (int i = 0; i < numthread; i++)
// 	// {
// 	// 	mythread[i].join();
// 	// }

// 	// 所需构造函数被删除
// 	// for (auto i : thread_vector)
// 	// 	i.join();

// 	for (size_t i = 0; i < thread_vector.size(); i++) {
// 		thread_vector[i].join();
// 	}
	
// }


int main() {

	MultiThreadsInArray();
	
	return 0;
}
